SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_I45]
/*-------------------------------------------------------------------*/                          
/*----- Empresa           : OFISIS S.A.                          ----*/                          
/*----- Cliente           : OFISIS S.A.                          ----*/                          
/*----- Sistema           : Contabilidad                         ----*/                          
/*----- Modulo            : Empresa                              ----*/                          
/*----- Programa          : Ajuste por Diferencia de cambio Docs(EN LINEA 'COP') ----*/                          
/*----- Nombre            : SP_TXMVTO_CNTB_I45                   ----*/                          
/*----- Script            : TXMVTO_CNTB                          ----*/                          
/*----- Desarrollado por  : PDGV                                 ----*/                          
/*----- Base de Datos     : MS SQL Server                        ----*/                          
/*----- Version BD        : 8.0                                  ----*/                          
/*-------------------------------------------------------------------*/                          
/*-------------------------------------------------------------------*/                          
/*----- Drop proc SP_TXMVTO_CNTB_I45                             ----*/                          
/*----- Grant all on SP_TXMVTO_CNTB_I45 to PUBLIC                ----*/                          
/*----- SP_TXMVTO_CNTB_I45                                                                
EXEC SP_TXMVTO_CNTB_I45  '01',1,'001','097','096','42151','COM','11/27/2003',11,2003,                        
'P','20212060756', 'FAC', '0005-0000000003'                        
----*/                          
/*-------------------------------------------------------------------*/                          
@ISCO_EMPR           TD_VC_002,     
@ISCO_USUA_MODI      TD_VC_008,  
@IDFE_USUA_MODI      TD_DT_001,                      
@INNU_CNTB_EMPR      TD_IN_001_CONT,                          
@ISCO_UNID_CNTB      TD_VC_003,                          
@ISCO_OPRC_DIFE      TD_VC_003,                          
@ISCO_OPRC_0004      TD_VC_003,                          
@ISCO_CNTA_EMPR      TD_VC_020_CNTA,                          
@ISST_CNTA_NATU      TD_VC_003,  -- 'COM' 0 'VEN'                        
@IDFE_ASTO_CNTB      TD_DT_001,                          
@INNU_MESE           TD_IN_002_MESE,                          
@INNU_ANNO           TD_IN_004_ANNO,                          
@ISTI_AUXI_EMPR      TD_VC_001,                          
@ISCO_AUXI_EMPR      TD_VC_020,                           
@ISTI_DOCU           TD_VC_003,                          
@ISNU_DOCU           TD_VC_020,                     
@ISCO_OPRC_CNTB      TD_VC_003,                     
@ISNU_ASTO           TD_VC_010,                     
@INNU_SECU           TD_IN_002,           
@INNU_PROC           TD_IN_001,        
@ISST_DIFE_MAYO      TD_VC_001        
--  WITH ENCRYPTION
As                          
Begin Transaction SP_TXMVTO_CNTB_I45                          
                          
Declare                           
 @VDFE_VOUC          TD_DT_001,                          
 @VDFE_CAMB          TD_DT_001,                          
 @CNIM_ORIG_SALD     TD_NU_016_004,                          
 @CNIM_SOLE_SALD     TD_NU_016_004,                          
 @CSTI_DOCU         TD_VC_003,                          
 @CSNU_DOCU          TD_VC_020,                          
 @CDFE_DOCU          TD_DT_001,                          
 @VNIM_ORIG_MVTO     TD_NU_016_004,                          
 @VNIM_SOLE_MVTO     TD_NU_016_004,                          
 @VNTO_SALD_ORIG     TD_NU_016_004,           @VNTO_SALD_SOLES    TD_NU_016_004,                          
 @VNTO_AJUS          TD_NU_016_004,                          
 @VSCO_CNTA_GANA     TD_VC_020_CNTA,                          
 @VSCO_CNTA_PERD     TD_VC_020_CNTA,                          
 @VSTI_OPER          TD_VC_003,                          
 @VNTO_CNTA_GANA     TD_NU_016_004,                          
 @VNTO_CNTA_PERD     TD_NU_016_004,                 
 @VNTO_GANA_PEND     TD_NU_016_004,                          
 @VNTO_PERD_PEND     TD_NU_016_004,           
 @VNNU_SECU          TD_IN_002,                           
 @VNNU_SECU_PEND     TD_IN_002,           
 @VSCO_MONE_CNTB   TD_VC_003,                          
 @VDFE_DOCU          TD_DT_001,                         
 @CSTI_AUXI_EMPR     TD_VC_001,                          
 @CSCO_AUXI_EMPR     TD_VC_020,                   
 @CDFE_ASTO_0001     TD_DT_001,                          
 @VSID_GANA_CAMB     TD_VC_003,                          
 @VSID_PERD_CAMB     TD_VC_003,                          
 @VNFA_CMPR_REFE     TD_NU_015_006,                          
 @VNFA_VNTA_REFE     TD_NU_015_006,                          
 @VDFE_ASTO_CNTB     TD_DT_001,                          
 @VNFA_CAMB_DIAR     TD_NU_015_006,                          
 @VSST_CNTA          TD_VC_001,                          
 @VNFA_CMPR_CNTA     TD_NU_015_006,                          
 @VNFA_VNTA_CNTA     TD_NU_015_006,                          
 @VNFA_CMPR_CNTB     TD_NU_015_006,                          
 @VNFA_VNTA_CNTB     TD_NU_015_006,                          
 @VSCO_MONE_CNTA     TD_VC_003,                          
 @VSCO_GANA_DIFE     TD_VC_020,                          
 @VSCO_PERD_DIFE     TD_VC_020,                          
 @VSST_AUXI_EMPR     TD_VC_001,                          
 @VSTI_AUXI_DCGA     TD_VC_001,                          
 @VSCO_AUXI_DCGA     TD_VC_020,                          
 @VSTI_AUXI_DCPE     TD_VC_001,                          
 @VSCO_AUXI_DCPE     TD_VC_020,                          
 @VSST_FLAG          TD_VC_001,                          
 @VSCO_OPRC_CNTB     TD_VC_003,                          
 @VNNU_ULTI_ASTO     TD_IN_001,                          
 @VSNU_ASTO          TD_VC_010,                          
                          
---- Multimoneda                          
 @VSST_CNTA_CAMB     TD_VC_003,                          
 @VNIM_MVTO_ORI2     TD_NU_016_004,                          
 @VNFA_CAMB          TD_NU_015_006,                          
                          
 ---- Cursor CU_TXMVTO_CNTB_I10_2                          
 @CSCO_EMPR_0002     TD_VC_002,                          
 @CNNU_CNTB_EMP2     TD_IN_001_CONT,                          
 @VDFE_ASTO_CNT2     TD_DT_001,                          
 @CNTI_CAMB_0002     TD_VC_003,                          
 @CSCO_MONE_0002     TD_VC_003,                          
 @CNFA_CAMB_0002     TD_NU_015_006,                          
 @CSTI_OPER_0002     TD_VC_003,                          
 @CNIM_MVTO_ORI2     TD_NU_016_004,                          
 @CNIM_MVTO_CNT2     TD_NU_016_004,                          
 @CSTI_AUXI_EMP2     TD_VC_001,                          
 @CSCO_AUXI_EMP2     TD_VC_020,                          
 @CSTI_DOCU_0002     TD_VC_003,                          
 @CSNU_DOCU_0002     TD_VC_020,                            
 @CDFE_DOCU_0002     TD_DT_001,                          
                  
----                   
 @VSID_DIFE          TD_VC_003,                  
 @VSID_0004          TD_VC_003,                  
 @VNIM_CARG          TD_NU_016_004,                          
 @VNIM_ABON          TD_NU_016_004,            
 @VSST_DFCA_LINE     TD_VC_001,          
 @CDFE_DOCU_VENC     TD_DT_001,
 @VSST_ORDE_SERV        TD_VC_001,
 @VSCO_ORDE_DCGA        TD_VC_020, @VSCO_ORDE_DCPE        TD_VC_020,
 @CSCO_ORDE_SER1        TD_VC_020,                    
 @CSCO_ORDE_SERV        TD_VC_020                                        
                          
--- Inicializar-------------                          
                          
 Select @VSTI_AUXI_DCGA = Null                          
 Select @VSCO_AUXI_DCGA = Null                          
 Select @VSTI_AUXI_DCPE = Null                          
 Select @VSCO_AUXI_DCPE = Null                          
                  
                  
  ---------------------------                  
 -- saca saldo del documento                  
 ---------------------------               
            
 Select @VSST_DFCA_LINE = IsNull(ST_DFCA_LINE, '')            
 From TMPARA_CONT             
 Where CO_EMPR = @ISCO_EMPR             
 And NU_ANNO = 9999            
             
 If @VSST_DFCA_LINE = 'S'            
 Begin             
            
                
 Select @VSID_DIFE = ''                    
 Select @VSID_0004 = ''                    
 Select Top 1 @VSID_DIFE = IsNull(Rtrim(ID_DIFE), ''), @VSID_0004 = IsNull(Rtrim(ID_0004), '')                    
 From TTCNTB_EMPR                     
 Where CO_EMPR = @ISCO_EMPR                     
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                     
                    
 -- NO TOMA EN CUENTA LA LINEA DE DIFERENCIA DE CAMBIO                    
Select @VNIM_CARG = IsNull( SUM( ( ROUND( ((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0),                    
 @VNIM_ABON = IsNull( SUM( ( ROUND( ((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0)                     
From TXMVTO_CNTB t1--(index = ITXMVTO_CNTB_02 )                    
Where t1.CO_EMPR = @ISCO_EMPR                    
and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                    
and t1.NU_ANNO  = @INNU_ANNO                    
and t1.NU_MESE  <= @INNU_MESE                    
and t1.CO_CNTA_EMPR = @ISCO_CNTA_EMPR                    
and t1.TI_AUXI_EMPR = @ISTI_AUXI_EMPR                    
and t1.CO_AUXI_EMPR = @ISCO_AUXI_EMPR                    
and t1.TI_DOCU = @ISTI_DOCU                    
and t1.NU_DOCU = @ISNU_DOCU                    
and t1.SI_MVTO_CNTB In ( 'APR', 'DIG')                    
And     Not Exists (Select t2.CO_EMPR From TTIDEN_OPER t2                    
   Where t2.CO_EMPR = @ISCO_EMPR                     
   And t2.NU_CNTB_EMPR = @INNU_CNTB_EMPR                     
   And t2.ID_OPRC In (@VSID_DIFE, @VSID_0004)                    
   And t2.CO_OPRC_CNTB = t1.CO_OPRC_CNTB )                    
                    
 /* SOLO SE EFECTUA DIF DE CAMBIO EN LINEA SI ES QUE ES UNA CANCELACION TOTAL*/                  
 If @VNIM_CARG - @VNIM_ABON  = 0                   
                  
Begin                   
                  
 ---------------------------                  
 -- fin saca saldo del documento                   
 ---------------------------                  
                             
                          
 /* Selecciona las cuenta de Ganacia y Perdida */                          
 Select @VSCO_MONE_CNTB = CO_MONE,                          
        @VSID_GANA_CAMB = ID_GANA_CAMB,                          
        @VSID_PERD_CAMB = ID_PERD_CAMB                           
 From TTCNTB_EMPR                          
 Where CO_EMPR = @ISCO_EMPR                          
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR                          
                          
 Select @VSST_AUXI_EMPR = 'N'                          
 Select @VSST_ORDE_SERV = 'N'                              
 Select @VSCO_CNTA_GANA = t1.CO_CNTA_EMPR,                          
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
   @VSST_ORDE_SERV = t2.ST_ORDE_SERV                          
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                          
 Where t1.CO_EMPR = @ISCO_EMPR                           
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t1.ID_CNTA = @VSID_GANA_CAMB                          
 And t2.CO_EMPR = t1.CO_EMPR                          
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                          
                          
 If @VSST_AUXI_EMPR = 'S'                          
   Begin                          
     Select @VSTI_AUXI_DCGA = NullIf(Rtrim(TI_AUXI_DCGA), ''),                          
            @VSCO_AUXI_DCGA = NullIf(Rtrim(CO_AUXI_DCGA), '')                          
     From   TMPARA_CONT                          
     Where  CO_EMPR = @ISCO_EMPR                           
   End                    

If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCGA = NullIf(Rtrim(CO_ORDE_DCGA), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                                          
                          
 Select @VSST_AUXI_EMPR = 'N'                          
 Select @VSST_ORDE_SERV = 'N'                              
 Select @VSCO_CNTA_PERD = t1.CO_CNTA_EMPR,                          
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
   @VSST_ORDE_SERV = t2.ST_ORDE_SERV                          
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                          
 Where t1.CO_EMPR = @ISCO_EMPR                           
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t1.ID_CNTA = @VSID_PERD_CAMB                          
 And t2.CO_EMPR = t1.CO_EMPR                          
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                          
                          
 If @VSST_AUXI_EMPR = 'S'                          
   Begin                          
     Select @VSTI_AUXI_DCPE = NullIf(Rtrim(TI_AUXI_DCPE), ''),           
            @VSCO_AUXI_DCPE = NullIf(Rtrim(CO_AUXI_DCPE), '')                          
     From TMPARA_CONT                          
     Where CO_EMPR = @ISCO_EMPR                           
   End                    

If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCPE = NullIf(Rtrim(CO_ORDE_DCPE), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                                      
                          
---- Si hay amarre con Cuentas de Dif De cambio en la TMPLAN_EMPR. Toma esas cuentas------------                          
 Select @VSCO_GANA_DIFE = Ltrim(Rtrim(IsNull(CO_GANA_DIFE,''))),                      
      @VSCO_PERD_DIFE = Ltrim(Rtrim(IsNull(CO_PERD_DIFE,'')))                          
 From  TMPLAN_EMPR                          
 Where CO_EMPR = @ISCO_EMPR                          
 And   CO_CNTA_EMPR = @ISCO_CNTA_EMPR                          
                          
 If @VSCO_GANA_DIFE <> '' And @VSCO_PERD_DIFE <> ''                         
   Begin                          
     Select @VSCO_CNTA_GANA = @VSCO_GANA_DIFE              
     Select @VSCO_CNTA_PERD = @VSCO_PERD_DIFE                          
   End                          
                          
/*Seccion para cuentAs que tengan Auxiliar */                          
 Select @CNIM_ORIG_SALD = 0                          
 Select @CNIM_SOLE_SALD = 0                          
 Select @VNIM_ORIG_MVTO = 0                          
 Select @VNIM_SOLE_MVTO = 0                          
 Select @VNTO_CNTA_GANA = 0                          
 Select @VNTO_CNTA_PERD = 0                          
 Select @VNTO_GANA_PEND = 0                          
 Select @VNTO_PERD_PEND = 0                          
 Select @VNTO_SALD_ORIG = 0                           
 Select @VNTO_SALD_SOLES  = 0                          
 Select @VNTO_AJUS = 0                          
                           
---- Se crean tablas temporales para Multimoneda                          
---- #TWMVTO_CNT1 guarda data para la conversi>n de importe en moneda contabilidad                          
 Create table #TWMVTO_CNT1                          
 (CO_EMPR       varchar(2) NULL,                          
  NU_CNTB_EMPR  integer NULL,                          
  FE_ASTO_CNTB  datetime NULL,                      
  TI_CAMB       varchar(3) NULL,                          
  CO_MONE       varchar(3) NULL,                          
  FA_CAMB       numeric(15,6) NULL,                          
  TI_OPER       varchar(3) NULL,                          
  IM_MVTO_ORIG  numeric(16,4) NULL,                          
  IM_MVTO_CNTB  numeric(16,4) NULL,                          
  TI_AUXI_EMPR  varchar(1) NULL,                          
  CO_AUXI_EMPR  varchar(20) NULL,                          
  TI_DOCU       varchar(3) NULL,                          
  NU_DOCU       varchar(20) NULL,                          
  FE_DOCU datetime NULL,                         
  FE_ASTO_0001  Datetime NULL,           
  FE_DOCU_VENC  DateTime NULL, 
  CO_ORDE_SERV  Varchar(20) NULL )                          
                       
 ---- #TWMVTO_CNT2 guarda data para cursor CU_TXMVTO_CNTB_I10_1                          
 Create table #TWMVTO_CNT2                          
 (TI_AUXI_EMP2  varchar(1) NULL,                          
  CO_AUXI_EMP2  varchar(20) NULL,                          
  TI_DOC2       varchar(3) NULL,                          
  NU_DOC2       varchar(20) NULL,                          
  FE_DOCU       datetime NULL,                           
  TI_OPER_0002  varchar(3) NULL,                          
  IM_MVTO_ORI2  numeric(16,4) NULL,                          
  IM_MVTO_CNT2  numeric(16,4)  NULL,                         
  FE_ASTO_0001  Datetime NULL,           
  FE_DOCU_VENC DateTime NULL, 
  CO_ORDE_SERV  Varchar(20) NULL)                                                   
 ---- Borra data de tablas temporales                          
-- Delete from #TWMVTO_CNT1                          
-- Delete from #TWMVTO_CNT2                          
                          
 ---- Insert Select con las condiciones del cursor CU_TXMVTO_CNTB_I10_1                          
 Insert Into #TWMVTO_CNT1 (CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB,                          
 CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR,                           
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, FE_DOCU_VENC,CO_ORDE_SERV)                          
 Select CO_EMPR, @INNU_CNTB_EMPR, FE_ASTO_CNTB,-- @VDFE_VOUC,                     
 TI_CAMB, CO_MONE,                          
 FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR,                          
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_CNTB, FE_DOCU_VENC,CO_ORDE_SERV                           
 From  TXMVTO_CNTB --( index = ITXMVTO_CNTB_02 )   /* (3)*/                          
 Where CO_EMPR = @ISCO_EMPR                           
  And NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
  And NU_ANNO = @INNU_ANNO                    
  And NU_MESE  <= @INNU_MESE                           
  And CO_CNTA_EMPR  = @ISCO_CNTA_EMPR                           
  And TI_AUXI_EMPR = @ISTI_AUXI_EMPR                           
  And CO_AUXI_EMPR = @ISCO_AUXI_EMPR                           
  And TI_DOCU = @ISTI_DOCU                           
  And NU_DOCU = @ISNU_DOCU                          
  And SI_MVTO_CNTB  = 'APR'                           
  And ((ST_DIFE_CAMB = 'N' And NU_ANNO = @INNU_ANNO And NU_MESE = @INNU_MESE)               
  Or (NU_ANNO = @INNU_ANNO And NU_MESE < @INNU_MESE))               
 Order By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                          
                          
 ---- Cursor para convertir importe original en importe moneda contabilidad                          
 Declare CU_TXMVTO_CNTB_I45_2 Cursor                          
 For                           
   Select CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB, CO_MONE, FA_CAMB,                          
          TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
          TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, FE_DOCU_VENC,CO_ORDE_SERV                          
   From  #TWMVTO_CNT1                          
   Order by TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                          
                          
 Open CU_TXMVTO_CNTB_I45_2                          
 Fetch CU_TXMVTO_CNTB_I45_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                          
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                          
 @CNIM_MVTO_CNT2, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                          
 @CDFE_DOCU, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1                        
                          
 While @@Fetch_status = 0                          
   Begin                          
     ---- Convierte importe original en importe moneda contabilidad                           
/*                          
    Exec SP_CONV_MONE_Q01  @CSCO_EMPR_0002, @CSCO_MONE_0002, @CNNU_CNTB_EMP2, @CNTI_CAMB_0002,                          
       @ISST_CNTA_NATU, @CNFA_CAMB_0002, @VDFE_ASTO_CNT2, @CNIM_MVTO_ORI2, 'P', @VNIM_MVTO_ORI2 Output                          
                        
    If @CNIM_MVTO_ORI2 = 0.00   */      
    Select @VNIM_MVTO_ORI2 = @CNIM_MVTO_CNT2                          
                          
  ---- Inserta tabla temporal #TWMVTO_CNT2, campos serabn usados en el cursor CU_TXMVTO_CNTB_I10_1                          
  Insert into #TWMVTO_CNT2 VALUES( @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002, @CDFE_DOCU,         
 @CSTI_OPER_0002, @CNIM_MVTO_ORI2, @VNIM_MVTO_ORI2, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1 )                           
                          
 Fetch CU_TXMVTO_CNTB_I45_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                          
   @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                          
   @CNIM_MVTO_CNT2, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                          
   @CDFE_DOCU, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1                          
 End /* While @@Fetch_status =0 */                          
                          
 Close CU_TXMVTO_CNTB_I45_2                          
 Deallocate CU_TXMVTO_CNTB_I45_2                          
                           
---- Proceso normal, solo se cambio la tabla del select del cursor,                          
---- tiene las mismas columnas pero con el importe de la moneda de la contabilidad                          
------------------------------------------------------------------------------------------------------------------------------------------------                          
 Select @VSST_FLAG = 'N'           
          
  -- OBTIENE EL ULTIMO SECUENCIAL                           
 Select @VSNU_ASTO = NULL          
 Select @VSNU_ASTO = Max(NU_ASTO)          
 From TXMVTO_CNTB                    
 Where CO_EMPR = @ISCO_EMPR                    
 And   NU_CNTB_EMPR = @INNU_CNTB_EMPR                    
 And   CO_UNID_CNTB = @ISCO_UNID_CNTB                    
 And   CO_OPRC_CNTB = @ISCO_OPRC_DIFE                    
 And  NU_ANNO = @INNU_ANNO               
 And   NU_MESE = @INNU_MESE                     
 And   CO_CNTA_EMPR = @ISCO_CNTA_EMPR          


 If @VSNU_ASTO IS NULL           
   Begin           
       Select @VNNU_ULTI_ASTO = IsNull(NU_ULTI_ASTO,0)              
       From TCFECH_PROC              
       Where CO_EMPR = @ISCO_EMPR              
       And NU_CNTB_EMPR = @INNU_CNTB_EMPR              
       And CO_UNID_CNTB = @ISCO_UNID_CNTB              
       And CO_OPRC_CNTB = @ISCO_OPRC_DIFE              
       And NU_ANNO = @INNU_ANNO              
       And NU_MESE = @INNU_MESE               
          
       Select @VSNU_ASTO = Convert( varchar(10), @VNNU_ULTI_ASTO + 1 )              
       Select @VSNU_ASTO = STUFF('0000000000', 11-datalength( @VSNU_ASTO ), datalength(@VSNU_ASTO ), @VSNU_ASTO )              
   End                         
                        
 Declare CU_TXMVTO_CNTB_I45_1 Cursor                          
 For                           
   Select   TI_DOC2, NU_DOC2, Min(FE_DOCU), TI_AUXI_EMP2, CO_AUXI_EMP2,                          
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_ORI2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_ORI2, 0) ),2))), 0),                          
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_CNT2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_CNT2, 0) ),2))), 0),                         
     Min(FE_ASTO_0001), Min(FE_DOCU_VENC),NullIf(Rtrim(Max(CO_ORDE_SERV)),'')                           
   From #TWMVTO_CNT2                          
   Group By TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2--, FE_DOCU                          
   Order By TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2--, FE_DOCU                          
                          
 Open CU_TXMVTO_CNTB_I45_1                    
 Fetch CU_TXMVTO_CNTB_I45_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                           
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV
                           
 While @@Fetch_status = 0                          
   Begin                          
                        
 -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES YA QUE SI ES EL MISMO DIA NO HAY DIF DE CAMBIO                     
 If (@CDFE_ASTO_0001 != @IDFE_ASTO_CNTB) Or (Abs(@CNIM_SOLE_SALD) > 0)  
 Begin                         
                        
-- If @VSST_FLAG = 'N'                        
-- Begin                         
                         
 If @CNIM_ORIG_SALD != 0                        
 Select @VSCO_OPRC_CNTB = @ISCO_OPRC_0004                         
 If @CNIM_ORIG_SALD = 0                        
 Select @VSCO_OPRC_CNTB = @ISCO_OPRC_DIFE                        
                        
  -- OBTIENE EL ULTIMO SECUENCIAL                           
/* Select @VSNU_ASTO = IsNull(Max(NU_ASTO),'0000000001')                    
 From TXMVTO_CNTB                    
 Where CO_EMPR = @ISCO_EMPR                    
 And   NU_CNTB_EMPR = @INNU_CNTB_EMPR                    
 And   CO_UNID_CNTB = @ISCO_UNID_CNTB                    
 And   CO_OPRC_CNTB = @VSCO_OPRC_CNTB           
 And   NU_ANNO = @INNU_ANNO                    
 And   NU_MESE = @INNU_MESE           */          
                    
 Select @VNNU_SECU = ISNULL(MAX(NU_SECU),0) + 1                    
 From TXMVTO_CNTB                    
 Where CO_EMPR = @ISCO_EMPR                    
 And   NU_CNTB_EMPR = @INNU_CNTB_EMPR                    
 And   CO_UNID_CNTB = @ISCO_UNID_CNTB                    
 And   CO_OPRC_CNTB = @VSCO_OPRC_CNTB                    
 And   NU_ANNO = @INNU_ANNO                    
 And   NU_MESE = @INNU_MESE                    
 And   NU_ASTO = @VSNU_ASTO                        
                       
/*----------CALCULO DEL FACTOR DE CAMBIO--------------------------*/                        
/* Select @VSCO_MONE_CNTA = CO_MONE                          
 From TMPLAN_EMPR                          
 Where CO_EMPR = @ISCO_EMPR                          
 and CO_CNTA_EMPR = @ISCO_CNTA_EMPR                          
 And NU_ANNO = 9999    */          
                          
/*----------- Para obtener el factor de la moneda de la cuenta -------*/                          
/* SELECT @VNFA_CMPR_CNTA = FA_CMPR_OFIC, @VNFA_VNTA_CNTA = FA_VNTA_OFIC                          
 FROM TCFACT_CAMB                 
 WHERE CO_MONE = @VSCO_MONE_CNTA                          
 And   FE_CAMB = @CDFE_ASTO_0001                */          
                          
/*------------- Para obtener el factor de la moneda de la contabilidad ----------*/                          
/* SELECT @VNFA_CMPR_CNTB = FA_CMPR_OFIC, @VNFA_VNTA_CNTB = FA_VNTA_OFIC                           
 FROM TCFACT_CAMB                          
 WHERE CO_MONE = @VSCO_MONE_CNTB                          
 And   FE_CAMB = @CDFE_ASTO_0001                */          
                          
/* if @VNFA_CMPR_CNTA is NULL                          
   Select @VNFA_CMPR_CNTA = 1.00                          
             if @VNFA_VNTA_CNTA is NULL                          
   Select @VNFA_VNTA_CNTA = 1.00                          
                          
 if @VNFA_CMPR_CNTB is NULL                          
   Select @VNFA_CMPR_CNTB = 1.00                          
                          
 if @VNFA_VNTA_CNTB is NULL                          
   Select @VNFA_VNTA_CNTB = 1.00                       
                          
 Select @VNFA_CMPR_REFE = @VNFA_CMPR_CNTA / @VNFA_CMPR_CNTB                          
 Select @VNFA_VNTA_REFE = @VNFA_VNTA_CNTA / @VNFA_VNTA_CNTB                */          
                          
/*-------------------------------------------------------------------------------*/                          
/* If @VNFA_CMPR_REFE IS NULL                          
  Select @VNFA_CMPR_REFE = 1.00                          
                          
 If @VNFA_VNTA_REFE IS NULL                          
  Select @VNFA_VNTA_REFE = 1.00                          
                        
 Select @VSST_FLAG = 'S'              */          
                        
-- End                         
                        
/*----------FIN CALCULO DEL FACTOR DE CAMBIO--------------------------*/                        
                        
     Select @VNTO_SALD_ORIG = 0                          
     Select @VNTO_SALD_SOLES  = 0                          
     Select @VNTO_AJUS = 0                          
     Select @VNTO_SALD_ORIG = ROUND(@CNIM_ORIG_SALD,2)                          
     Select @VNTO_SALD_SOLES  = ROUND(@CNIM_SOLE_SALD,2)                          
                          
  /*   If @ISST_CNTA_NATU = 'COM'                          
       Begin                          
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_CMPR_REFE                          
       End                          
     Else                          
       Begin                          
         Select @VNTO_SALD_ORIG = @VNTO_SALD_ORIG * @VNFA_VNTA_REFE                          
       End                */          
                          
     Select @VNTO_AJUS = ROUND(@VNTO_SALD_ORIG,2) - ROUND(@VNTO_SALD_SOLES,2)                          
                          
     If @VNTO_AJUS != 0.00                          
       Begin                           
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                           
           Begin                             
             Select @VNTO_AJUS = ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                          
                                
             If @VNTO_AJUS > 0.00                          
               Begin                            
                          
                  -- @IDFE_ASTO_CNTB EL LUGAR DE  @VDFE_VOUC                          
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                          
                 /*Comentario : Insercion del Asiento de Ajuste*/                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                           
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                           
                 FA_CAMB_DIAR,  CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,         
      FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV  )                          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
                 'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                     
                @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,         
    @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
                 If @@ERROR != 0                           
                   Begin              
                     Close CU_TXMVTO_CNTB_I45_1                          
                     Deallocate CU_TXMVTO_CNTB_I45_1                          
                     Rollback Tran                       
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
               End /* If @VNTO_AJUS > 0 */                          
                          
             If @VNTO_AJUS < 0.00                          
               Begin                           
                 /*Comentario : Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
      NU_ANNO, NU_MESE, NU_ASTO, NU_SECU,FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,  FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                          
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,         
      NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV )  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                           
                 'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO','APR', '  ', 'N', 'N', 'S', 1.000000,                     
   @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC, @INNU_PROC, @ISST_DIFE_MAYO,  
     @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)                          
                 If @@ERROR != 0                          
 Begin                           
                     Close CU_TXMVTO_CNTB_I45_1                          
                     Deallocate CU_TXMVTO_CNTB_I45_1                          
                     Rollback Tran                           
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                          
               End /* If @VNTO_AJUS < 0 */                          
           End  /* If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES > 0 ) */                          
                             
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
           Begin                          
             Select @VNTO_AJUS = abs(ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                          
 If @VNTO_AJUS > 0.00                          
               Begin                          
                 /*Comentario : Insercion del Asiento de Ajuste */                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                         
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                            
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC,         
      NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV )  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB,                          
                 1.000000, 'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                     
      @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC, @INNU_PROC,   
   @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV )                          
                 If @@ERROR != 0                               
                   Begin                           
                     Close CU_TXMVTO_CNTB_I45_1                          
                     Deallocate CU_TXMVTO_CNTB_I45_1                          
                     Rollback Tran                                                                                                                                                                                                                                                             
                   Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                          
       End /* If @VNTO_AJUS > 0 */                          
                                   
             If @VNTO_AJUS < 0.00                          
               Begin                          
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                          
     /*Comentario : Insercion del Asiento de Ajuste*/                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                            
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,         
                 FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV )                          
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                          
                 'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                     
                 @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,         
                 @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV )                          
                 If @@ERROR != 0                               
                   Begin                           
          Close CU_TXMVTO_CNTB_I45_1                          
                     Deallocate CU_TXMVTO_CNTB_I45_1                          
                     Rollback Tran                           
           Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1        
               End /* If @VNTO_AJUS < 0 */                          
           End /*If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES < 0 ) */                          
                          
         If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                          
           Begin                          
             Select @VNTO_AJUS =  (0.00 - ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                          
             If @VNTO_AJUS > 0.00                          
               Begin                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                          
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
        CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO,  
  CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV  )                          
    Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                     
         @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC, @INNU_PROC,   
  @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV )                          
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I45_1                          
                   Deallocate CU_TXMVTO_CNTB_I45_1                          
                   Rollback Tran                           
                   Return                          
                 End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                              
             End /* If @VNTO_AJUS > 0 */                          
                          
           If @VNTO_AJUS < 0.00                          
             Begin                          
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                   
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                          
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
  ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV )                          
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                     
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC, @INNU_PROC,   
  @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV  )  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I45_1                          
        Deallocate CU_TXMVTO_CNTB_I45_1                          
                   Rollback Tran                           
                   Return                          
        End                      
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End /* If @VNTO_AJUS < 0      */                          
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                          
                      
       If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
         Begin                          
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                          
           If @VNTO_AJUS > 0.00                          
             Begin                          
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
        CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO,  
  CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
              Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR',  '  ', 'N', 'N', 'S', 1.000000,                     
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC, @INNU_PROC,         
               @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV  )                          
               If @@ERROR != 0                               
               Begin                           
                 Close CU_TXMVTO_CNTB_I45_1                          
                 Deallocate CU_TXMVTO_CNTB_I45_1                          
           Rollback Tran                           
                 Return                          
               End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End /* If @VNTO_AJUS > 0 */                          
            
           If @VNTO_AJUS < 0.00                          
             Begin                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
           Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
        ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                     
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,   
   @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I45_1                          
                   Deallocate CU_TXMVTO_CNTB_I45_1                          
                   Rollback Tran                           
                   Return                          
                 End                          
  Select @VNNU_SECU = @VNNU_SECU + 1                          
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                              
             End /* If @VNTO_AJUS < 0      */                          
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                                
                          
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )  
        Begin  
         Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                          
           If @VNTO_AJUS > 0.00                          
             Begin                          
               Select @VNTO_CNTA_PERD = @VNTO_CNTA_PERD + ROUND(@VNTO_AJUS,2)                              
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
        ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                      
            'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',1.000000,            
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,         
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)           
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I45_1                          
                   Deallocate CU_TXMVTO_CNTB_I45_1                          
                   Rollback Tran                           
                   Return                          
                 End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End                          
         End /*If( @VNTO_SALD_ORIG = 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                           
                          
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
         Begin                          
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                          
           If @VNTO_AJUS < 0.00                          
             Begin                          
               /* Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
        ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                     
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,         
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I45_1                          
                   Deallocate CU_TXMVTO_CNTB_I45_1                          
                   Rollback Tran                           
                   Return                          
                 End                          
              Select @VNNU_SECU = @VNNU_SECU + 1                          
              Select @VNTO_CNTA_GANA = @VNTO_CNTA_GANA - abs(ROUND(@VNTO_AJUS,2))                          
             End                           
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                          
     End    /*If @VNTO_AJUS != 0 */                         
                        
 End /*FIN  -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES */                        
                         
 Fetch CU_TXMVTO_CNTB_I45_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                           
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV                          
                          
 End /* While @@Fetch_status =0 */                          
 Close CU_TXMVTO_CNTB_I45_1                          
 Deallocate CU_TXMVTO_CNTB_I45_1                          
                          
/* Insercion de cuenta de pTrdida en diferencia de cambio      */                          
 If @VNTO_CNTA_PERD != 0.00                          
   Begin                                
     If @VNTO_CNTA_PERD > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_CNTA_PERD < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
                          
     /*Comentario : Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                           
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                     
     CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO,   
     CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                        
     @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_PERD), 'AJUST x DIF.CAMBIO',                          
  'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR,         
     @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCPE)  
     If @@ERROR != 0                          
       Begin                           
         Rollback Tran                          
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                          
   End                          
                          
/* Insercion de cuenta de pTrdida en diferencia de cambio Pendiente */                          
 If @VNTO_PERD_PEND != 0.00                          
   Begin                                
     If @VNTO_PERD_PEND > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_PERD_PEND < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
                          
     /*Comentario : Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                           
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_PERD_PEND), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,         
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCPE)  
     If @@ERROR != 0                          
       Begin                           
         Rollback Tran                          
         Return                    
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                           
   End                          
                          
/* Insercion de cuenta de ganancia en diferencia de cambio */                          
 If @VNTO_CNTA_GANA != 0.00                          
   Begin                          
     If @VNTO_CNTA_GANA > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_CNTA_GANA < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
     /*Comentario :Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                          
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_GANA), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,         
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCGA) 
     If @@ERROR != 0                               
       Begin                           
         Rollback Tran                           
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                        
   End                          
                          
/* Insercion de cuenta de ganancia en diferencia de cambio */                          
 If @VNTO_GANA_PEND != 0.00                          
   Begin                          
     If @VNTO_GANA_PEND > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_GANA_PEND < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
     /*Comentario :Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                          
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @VSCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @VSNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_GANA_PEND), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,         
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCGA)  
   If @@ERROR != 0                               
       Begin                           
         Rollback Tran                           
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                        
   End                          
                          
    Select @VNNU_SECU = @VNNU_SECU - 1                    
                          
    -- LLAMA A GESTION EN CASO QUE CTA PERDIDA X DIF TENGA AMARRE                    
   If IsNull(@INNU_PROC, 0) = 0 -- Is NULL          
    Begin           
       Exec SP_TXMVTO_CNTB_I34 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB,                          
       @VSCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @VSNU_ASTO, '', 'COP', @VNNU_SECU, @ISCO_USUA_MODI,@IDFE_USUA_MODI  
    End           

     Select @VSNU_ASTO = NULL

     Select @VSNU_ASTO = Max(NU_ASTO)          
     From TXMVTO_CNTB          
     Where CO_EMPR = @ISCO_EMPR And                          
     NU_CNTB_EMPR = @INNU_CNTB_EMPR And                          
     CO_UNID_CNTB = @ISCO_UNID_CNTB And                          
     CO_OPRC_CNTB = @VSCO_OPRC_CNTB and                          
     NU_ANNO = @INNU_ANNO And                          
     NU_MESE = @INNU_MESE           

-- Si el @VSNU_ASTO es null, quiere decir que no ha habido ajustes por dif. cambio

 If @VSNU_ASTO IS NOT NULL
   Begin
     Update TCFECH_PROC                          
     Set NU_ULTI_ASTO = Convert(Int, @VSNU_ASTO)                          
     Where CO_EMPR = @ISCO_EMPR And                          
     NU_CNTB_EMPR = @INNU_CNTB_EMPR And                          
     CO_UNID_CNTB = @ISCO_UNID_CNTB And                          
     CO_OPRC_CNTB = @VSCO_OPRC_CNTB and                          
     NU_ANNO = @INNU_ANNO And                          
     NU_MESE = @INNU_MESE                           
   End
                          
     If @@ERROR != 0                               
     Begin                           
         Rollback Tran                           
     Return                  
       End                  
                
End  /*FIN SI SALDO ES CERO */                          
End /*FIN SI DIF DE CAMBIO ES EN LINEA*/            
                            
Commit Transaction                           
                 
Return                          
/*-------------------------------- Fin -----------------------------*/          







GO
